Kriptovaluták értékének ábrázolása#
Szükséges könyvtárak telepítése, importálása#
# %pip install pandas
# %pip install plotly
# %pip install nbformat
# %pip install kaleido==0.1.0post1
import pandas as pd
import plotly.io as pio
import plotly.express as px
import plotly.graph_objects as go
from IPython.display import Image
Egy adathalmaz beolvasása..#
df = pd.read_csv("data/HBAR-USD.csv", delimiter=",")
df.head(10)
| Date | Open | High | Low | Close | Adj Close | Volume | |
|---|---|---|---|---|---|---|---|
| 0 | 2019-09-17 | 0.416009 | 0.416009 | 0.087753 | 0.090177 | 0.090177 | 10855378 |
| 1 | 2019-09-18 | 0.090519 | 0.100272 | 0.080045 | 0.086921 | 0.086921 | 14772274 |
| 2 | 2019-09-19 | 0.087702 | 0.087721 | 0.054469 | 0.057924 | 0.057924 | 27324784 |
| 3 | 2019-09-20 | 0.058087 | 0.059061 | 0.047800 | 0.052490 | 0.052490 | 15814443 |
| 4 | 2019-09-21 | 0.052402 | 0.055408 | 0.045456 | 0.048021 | 0.048021 | 13144171 |
| 5 | 2019-09-22 | 0.048065 | 0.048237 | 0.038757 | 0.039735 | 0.039735 | 10549578 |
| 6 | 2019-09-23 | 0.039739 | 0.039803 | 0.035488 | 0.037645 | 0.037645 | 11214860 |
| 7 | 2019-09-24 | 0.037689 | 0.043997 | 0.029084 | 0.029641 | 0.029641 | 12197101 |
| 8 | 2019-09-25 | 0.029515 | 0.031111 | 0.025871 | 0.030202 | 0.030202 | 8906428 |
| 9 | 2019-09-26 | 0.030204 | 0.031022 | 0.027305 | 0.028966 | 0.028966 | 5190095 |
..és ábrázolása#
fig = px.line(df, x="Date", y="Close")
fig.show()
Több adathalmaz hozzáadása és ábrázolása#
A BTC értéke rendkívül magas a többihez képest és emiatt nem igazán olvasható rajta kívül a többi adat. Szükséges lesz az adatok normalizálsása.
df_hbar = pd.read_csv("data/HBAR-USD.csv", delimiter=",")
df_ada = pd.read_csv("data/ADA-USD.csv", delimiter=",")
df_btc = pd.read_csv("data/BTC-USD.csv", delimiter=",")
df_dot = pd.read_csv("data/DOT-USD.csv", delimiter=",")
df_eth = pd.read_csv("data/ETH-USD.csv", delimiter=",")
df_xlm = pd.read_csv("data/XLM-USD.csv", delimiter=",")
fig = go.Figure()
fig.add_trace(
go.Scatter(x=df_hbar["Date"], y=df_hbar["Close"], mode="lines", name="HBAR")
)
fig.add_trace(go.Scatter(x=df_ada["Date"], y=df_ada["Close"], mode="lines", name="ADA"))
fig.add_trace(go.Scatter(x=df_btc["Date"], y=df_btc["Close"], mode="lines", name="BTC"))
fig.add_trace(go.Scatter(x=df_dot["Date"], y=df_dot["Close"], mode="lines", name="DOT"))
fig.add_trace(go.Scatter(x=df_eth["Date"], y=df_eth["Close"], mode="lines", name="ETH"))
fig.add_trace(go.Scatter(x=df_xlm["Date"], y=df_xlm["Close"], mode="lines", name="XLM"))
fig.show()
import os
import pandas as pd
folder_path = "data/"
output_file = "data/output_2.xlsx"
csv_files = [file for file in os.listdir(folder_path) if file.endswith(".csv")]
all_data = pd.DataFrame()
for csv_file in csv_files:
df = pd.read_csv(os.path.join(folder_path, csv_file))
ticker = csv_file.split("-")
df["Ticker"] = ticker[0]
all_data = pd.concat([all_data, df], ignore_index=True)
all_data.to_excel(output_file, index=False)
print("Adatok mentve: ", output_file)
Adatok mentve: data/output_2.xlsx
Normalizált adatok ábrázolása#
Az adatokat átkonvertáljuk [0,1] intervallumra a könnyebb ábrázolhatóság érdekében.
df = pd.read_excel("data/output.xlsx")
fig = px.line(df, x="Date", y="Normal", color="Ticker")
fig.update_layout(yaxis_title="Érték")
fig.show()
Az időtengely túl hosszú#
Létrehozunk egy új változót, ami csak a szükséges időintervallum adataint tárolja.
df = pd.read_excel("data/output.xlsx")
start_date = "2020-01-01"
date_df = df[(df["Date"] >= start_date)]
fig = px.line(date_df, x="Date", y="Normal", color="Ticker")
fig.update_layout(yaxis_title="Érték")
fig.show()
Az időtengely túl részletes#
Nézzünk további szűrési lehetőséget.
df = pd.read_excel("data/output.xlsx")
start_date = "2020-01-01"
n = 10
date_df = df[(df["Date"] >= start_date)]
freq_df = date_df[::n]
fig = px.line(freq_df, x="Date", y="Normal", color="Ticker")
fig.update_layout(yaxis_title="Érték")
fig.show()
Próbáljuk ki a diagramot görbékkel#
line_shape=”spline” paraméter megadásával.
df = pd.read_excel("data/output.xlsx")
start_date = "2020-01-01"
n = 15
date_df = df[(df["Date"] >= start_date)]
freq_df = date_df[::n]
fig = px.line(freq_df, x="Date", y="Normal", color="Ticker", line_shape="spline")
fig.update_layout(yaxis_title="Érték")
fig.show()